/**
 * Переводит углы в радианы
 */
app.radian = function(angel) {
    return (angel*Math.PI)/180;
};

/**
 * Добавление нового unit
 */
app.addUnit = function(event) {
    // Если нажали на рабочую область
    if($(event.target).attr("id") == "workspace") {
        // ID текущего unit
        var id = app.id(),
        unit = $("#unit-default").clone(),
        unitControl = unit.children(".control").children(".dummy");
        
        // Добавляем возвможность перетаскивания
        unit.draggable({
            scroll: false,
            containment: '#workspace',
            start: function() {
                // Удаляем видимость связей
                app.links.delView(id);
            },
            stop: function() {
                // Рисуем обратно
                app.links.updateAll(id);
            }
        });
        
        // Возможность связать два класса
        unit.droppable({
            hoverClass: "hover-link",
            drop: function(event, ui) {
                var jEvent = $(event.target),
                thisId = app.dragUnitId;
                //  Если это связь, если переместили в класс, если переместили не в текущий класс
                if($(ui.draggable).hasClass("bind") && jEvent.hasClass("unit") && jEvent.attr("id") != thisId) {
                    app.links.add(thisId, jEvent.attr("id"));
                }
            }
        });
        
        // Всплытие панели управления unit
        unit.bind({
            "mouseenter": function() {
                $(this).children(".control").show();
            },
            "mouseleave": function() {
                $(this).children(".control").hide();
            }
        });
        
        // Удаление unit
        unitControl.children(".delete").click(function() {
            app.links.del(id);
            unit.remove();
        })
        
        // Перемещение картинки связи
        unitControl.children(".bind").draggable({
            start: function() {
                // Обновляем перемещаемый ID
                app.dragUnitId = id;
            },
            stop: function(event, ui) {
                // Возвращаем объект обратно
                $(this).css(ui.originalPosition);
                $(this).parent().parent().css("display", "none");
            },
            drag: function() {
                $(this).parent().parent().css("display", "block");
            }
        });
        
        // Вставляем получившийся объект
        $("#workspace").prepend(unit.attr("id", id).removeAttr("style"));
    }
};

/**
 * Сохраняет изменения в поле после ввода
 */
app.saveChange = function(row) {
    var val = $(row).val();
    // Удаление
    if(val == "") {
        $(row).parent().remove();
    } else {
        $(row).hide().parent().attr("state", "view").children(".value").text(val).show();
    }
};